var selectorModal = '#modalBox';

function mostrarModal(url_datos, data_post, soloLectura)
{
    $.ajax({
         type: 'POST',
         url: url_datos,
         data: data_post,
         //Cuando se procese con éxito la petición se ejecutará esta función
         success: function(resp) {
            $(selectorModal).empty();
            $(selectorModal).html(resp);
            $('#screensaver').addClass("show");
            $(selectorModal).fadeIn('fast', function(){
                $('body').addClass("body-expanded");
                
                if (soloLectura) { 
                	$(selectorModal).find('input, textarea, button, select').attr('disabled','disabled');
                	$('#btnCancelar').attr('disabled', false);
                }
                else { $("input:visible:enabled:first").focus(); }
            });
         },
         error: function (jqXHR, textStatus, errorThrown) {
			bootbox.alert(url_datos + ': ' + errorThrown);
		}
     });
}

function cerrarModal()
{
    var modalbox = $(selectorModal);
    modalbox.fadeOut('fast', function(){
        $('body').removeClass("body-expanded");
    });
}

/* Abre el formulario modal para mostrar los datos de la entidad especificada */
function visualizar(controller, idEntidad){
    if(idEntidad != '' && idEntidad != 'NULL') {
    	var soloLectura = true;
	    var	url_datos = url_sitio + controller + '/visualizar/' + idEntidad;
	    mostrarModal(url_datos, {}, soloLectura);
	}
	else bootbox.alert('Debe especificar qué elemento desea visualizar antes de continuar');
}

/* Abre el formulario modal correspondiente a un nuevo registro de la entidad especificada */
function editar(controller, idEntidad){
    // Todos los controladores deben proveer un método "edicionPosible" para facilitar la validación
    edicionPosible = url_sitio + controller + '/edicionPosible/' + idEntidad;
    var data_post = {};
    
    // En primer lugar se valida si es posible realizarse la acción (por medio de una consulta -para nuevo y edicion-)
    $.ajax({
         type: 'POST',
         url: edicionPosible,
         //Cuando se procese con éxito la petición se ejecutará esta función
         success: function(resp) {
            if(resp == '1') {
                var	url_datos = url_sitio + controller + '/editar/' + idEntidad;
                var soloLectura = false;
                mostrarModal(url_datos, data_post, soloLectura);
            }
            else { bootbox.alert('No se puede editar el elemento elegido.'); }
         },
         error: function (jqXHR, textStatus, errorThrown) {
			bootbox.alert(edicionPosible + ': ' + errorThrown);
		}
     });
}


/* Pide confirmación antes de realizar la acción. Valida si la acción puede llevarse a cabo y en ese caso, continúa. */
function borrar(controller, idEntidad)
{
	bootbox.confirm("¿Seguro que desea continuar?", function(respuesta) {
		if(respuesta) {
		    url_datos_consulta = url_sitio + controller + '/borradoPosible/' + idEntidad;
		    $.ajax({
		         type: 'POST',
		         url: url_datos_consulta,
		         //Cuando se procese con éxito la petición se ejecutará esta función
		         success: function(resp) {
		          	if(resp == '1') // Se puede eliminar el elemento (devuelve TRUE)
		            { 
		            	url_datos_eliminar = url_sitio + controller + '/eliminar/' + idEntidad;

		            	var nombreBox = '#box-tabla-datos';
		            	if(controller == 'prod_adjuntos') nombreBox = '#box-content-adjuntos';
		            	
		            	ejecutarAjax(url_datos_eliminar, {}, 'POST', false, nombreBox);
		            }
		            else { bootbox.alert('No se puede borrar el elemento elegido.'); }
		         },
		         error: function (jqXHR, textStatus, errorThrown) {
					bootbox.alert(url_datos_consulta + ': ' + errorThrown);
				}
		     });
		}
	});
}

/* A partir de un arreglo de valores, arma una cadena que respete el formato de pasaje de parámetros del framework */
function getUrlParametros(parametros)
{
	var url_param = '';
	for (var i = 0; i < parametros.length; i++) {
		url_param = url_param + '/' + parametros[i];
	};

	return url_param;
}

/* Abre un formulario modal de búsqueda de la entidad recibida como parámetro. Los filtros deben estar
definidos en la página solicitante. */
function buscar(controller){
	var	url_datos = url_sitio + controller + '/ver_todos';
	var data_post = getFiltros(controller);
	if(data_post != 'EMPTY') {
		mostrarModal(url_datos, data_post, false);
	}
}

function getFiltros(entidad)
{
	var data_post = 'EMPTY';

	switch(entidad)
	{
		case '{entidad}':
		    // Definir todos los filtros
		    var nombre_duenio = getValue("filtro_nombre_duenio");
		    var dni_duenio = getValue("filtro_dni_duenio");

		    if(!valor_vacio(nombre_duenio) || !valor_vacio(dni_duenio))
		    	data_post = {filtro_nombre_duenio:nombre_duenio, 
		    		filtro_apellido_duenio:apellido_duenio, 
		    		filtro_dni_duenio:dni_duenio, 
		    		mascota:mascota_id};
			break;
	}

	return data_post;
}